// 该文件提供一个响应式API
import handlers from "./handlers/index.js";
import { isObject } from "./util.js";

const proxyMap = new WeakMap();
export function reactive(target) {
  // 在转换之前需要做一些判断，如果target不是对象，则直接返回
  if(!isObject(target)) {
    return target;
  }
  // 如果对象已经代理过了，则直接返回代理过的对象
  if(proxyMap.has(target)) {
    return proxyMap.get(target);
  }

  const proxy = new Proxy(target, handlers);

  // 代理对象和原始对象存放到映射表中
  proxyMap.set(target, proxy);
  
  return proxy;
}
